#include <iostream>
#include <cstdlib>
#include "opencv/cv.h"
#include "opencv/highgui.h"
#include "Region.h"


int main()
{

//g++ -Wall -ansi -pedantic AnaImage.cpp `pkg-config --cflags --libs opencv`

    
    IplImage *img_base=cvLoadImage("TP_Sujet_Doc/deuxcarre.pgm");
	int flip=0;
	if(img_base->origin!=IPL_ORIGIN_TL)
	{
		flip=CV_CVTIMG_FLIP;
	}
	 
	//Conversion en niveaux de gris   
	//cvConvertImage(img, img_nvg, flip);

	CvScalar scalaire;
	
	Region* r = new Region(0,0,img_base->width -1 ,img_base->height- 1);
	std::cout<<"width : " << img_base->width << " height : " << img_base->height << std::endl;
	r->subdivide(img_base);
	
	std::cout<<"nb de region " << Region::nbRegion <<std::endl;

	//On va parcourir toute l'image en niveaux de gris
	//x -> dans le sens de la largeur
	//y -> dans le sens de la hauteur
	/*for(int x=0; x<img_nvg->width; x++)
	{
		for(int y=0; y<img_nvg->height; y++)
		{
		        
		    //On récupère le pixel (x,y) de l'image en niveaux de gris.
		    scalaire=cvGet2D(img_nvg, y, x);
		        
		        
		    //On "l'inverse" 
		    //scalaire.val[0]=255-scalaire.val[0];
		        
		    //On le remplace dans l'image "inversée"
		    //cvSet2D(img_inv, y, x, scalaire);
		    
		    
		    if (scalaire.val[0]<125) {
		    	scalaire.val[0] = 30;
		    } else {
		    	scalaire.val[0] = 200;
		    }
		    
		    cvSet2D(img_inv, y, x, scalaire);
		    
		}
	}

    */
    //On crée une fenêtre intitulée "Hello World", 
    //La taille de cette fenêtre s'adapte à ce qu'elle contient.
    cvNamedWindow("Normale", CV_WINDOW_AUTOSIZE);
    //cvNamedWindow("Res", CV_WINDOW_AUTOSIZE);
    //cvNamedWindow("Gris", CV_WINDOW_AUTOSIZE);
    //cvNamedWindow("Inversee", CV_WINDOW_AUTOSIZE);
    
    //On affiche l'image dans la fenêtre "Hello World".
    cvShowImage("Normale", img_base);
    //cvShowImage("Res", img);
    //cvShowImage("Gris", img_nvg);
    //cvShowImage("Inversee", img_inv);
    
    //On attend que l'utilisateur appuie sur une touche (0 = indéfiniment).
    cvWaitKey(0);
    
    //Destruction de la fenêtre.
    cvDestroyWindow("Normale");
    //cvDestroyWindow("Res");
    //cvDestroyWindow("Gris");
    //cvDestroyWindow("Inversee");
    
    //Libération de l'IplImage (on lui passe un IplImage**).
    cvReleaseImage(&img_base);
    //cvReleaseImage(&img);
    //cvReleaseImage(&img_nvg);
    //cvReleaseImage(&img_inv);

    //Fini ^^
    return 0;

}
